home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
- From: billr@saab.CNA.TEK.COM (Bill Randle)
- Newsgroups: comp.sources.games
- Subject: v08i045: NetHack3 - display oriented dungeons & dragons (Ver. 3.0), Patch4i
- Message-ID: <4635@tekred.CNA.TEK.COM>
- Date: 29 Sep 89 21:14:31 GMT
- Sender: nobody@tekred.CNA.TEK.COM
- Lines: 1127
- Approved: billr@saab.CNA.TEK.COM
-
- Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
- Posting-number: Volume 8, Issue 45
- Archive-name: NetHack3/Patch4i
- Patch-To: NetHack3: Volume 7, Issue 56-93
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 9 (of 11)."
- # Contents: UPDATE4 do_patch4.sh others/Makefile.pc src/objects.c
- # Wrapped by billr@saab on Fri Sep 29 13:57:17 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'UPDATE4' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'UPDATE4'\"
- else
- echo shar: Extracting \"'UPDATE4'\" \(1550 characters\)
- sed "s/^X//" >'UPDATE4' <<'END_OF_FILE'
- X-------------
- XUPDATE4
- X-------------
- XNOTICE: The changes which were made in the code make all save and bones
- Xfiles absolete. Once Patch 4 is applied, all the old save and bones files
- Xmust be thrown out.
- X
- X
- XHere is a list of the main changes:
- X
- XObject and monster types got a new field specifying their color, so things
- Xcan now appear in "living color" instead having one color for all monsters,
- Xone for all weapons, and so on.
- X
- XReferences to monsters and objects on the floor were moved to new structures,
- Xwhich support the better color handling as well as provide yet faster access.
- X
- XDavid Gentzel provided a port for VMS. Although extensively tested by
- XDavid and others, and found to be sound, it probably needs further
- Xrefinements. We are appealing to those of you who know VMS (none of us
- Xdoes..) to join David in his efforts to refine the VMS code.
- X
- XMuch of the *main.c code was moved to a new file, to avoid having to update
- Xthat common code in three different *main.c files.
- X
- XVARARG handling was ifdef'd to satisfy ANSI compilers.
- X
- XAlmost all grey creatures now join the other gray creatures.
- X
- XMonsters will no longer be created in the same room as the player, and should
- Xno longer want to end up in the SE corner of the dungeon.
- X
- XLycanthropy is now considered a "major problem" (allowing for appeal to the
- Xgods through prayer), some artifacts are associated with particular character
- Xclasses, various oddities involving statues, digging, iron balls, and
- Xthrowing have been removed, and many other bugs, both major and minor, were
- Xfixed.
- X
- END_OF_FILE
- if test 1550 -ne `wc -c <'UPDATE4'`; then
- echo shar: \"'UPDATE4'\" unpacked with wrong size!
- fi
- # end of 'UPDATE4'
- fi
- if test -f 'do_patch4.sh' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'do_patch4.sh'\"
- else
- echo shar: Extracting \"'do_patch4.sh'\" \(739 characters\)
- sed "s/^X//" >'do_patch4.sh' <<'END_OF_FILE'
- X#! /bin/sh
- X# script to call patch to apply diff files
- X# make sure all of the patch files (and this file) are in your top level
- X# NetHack directory
- X#
- Xecho "applying patch4a"
- Xpatch -p <patches04a
- Xecho "applying patch4b"
- Xpatch -p <patches04b
- Xecho "applying patch4c"
- Xpatch -p <patches04c
- Xecho "applying patch4d"
- Xpatch -p <patches04d
- Xecho "applying patch4e"
- Xpatch -p <patches04e
- Xecho "applying patch4f"
- Xpatch -p <patches04f
- Xecho "applying patch4g"
- Xpatch -p <patches04g
- Xecho "applying patch4h"
- Xpatch -p <patches04h
- Xecho "building monst.c"
- Xif test -f 'src/monst.c'
- Xthen
- X mv -f src/monst.c src/monst.c.orig
- Xfi
- Xcat src/monst.c1 src/monst.c2 > src/monst.c
- Xrm src/monst.c1 src/monst.c2
- Xrm -f vms/*.orig
- Xecho "all patches applied, check for rejects"
- END_OF_FILE
- if test 739 -ne `wc -c <'do_patch4.sh'`; then
- echo shar: \"'do_patch4.sh'\" unpacked with wrong size!
- fi
- chmod +x 'do_patch4.sh'
- # end of 'do_patch4.sh'
- fi
- if test -f 'others/Makefile.pc' -a "${1}" != "-c" ; then
- mv -f others/Makefile.pc others/Makefile.pc.orig
- fi
- echo shar: Extracting \"'others/Makefile.pc'\" \(7987 characters\)
- sed "s/^X//" >'others/Makefile.pc' <<'END_OF_FILE'
- X# SCCS Id: @(#)Makefile.pc 3.0 89/07/07
- X# PC NetHack 3.0 Makefile for Microsoft(tm) "C" 4.0 or better.
- X#
- X# Large memory model, register bug, remove stack probes:
- XCC = msc
- XLINK = link
- XMODEL = L
- X
- X# Directories (makedefs hardcodes these, don't change them)
- XINCL = ..\include
- XAUX = ..\auxil
- XSRC = ..\src
- X
- XCFLAGS = -A$(MODEL) -DLINT_ARGS -Ot -Oa -Gs -Gt28 -I$(INCL)
- XLFLAGS = -exe -noig -stack:0x0aff -seg:512
- XTARG = pc
- X
- X.c.o:
- X $(CC) $(CFLAGS) $*.c, o\$*.o;
- X
- X# Optional high-quality BSD random number generation routines (see pcconf.h).
- X# Set to nothing if not used.
- XRANDOM = o\random.obj
- X
- X# For NDMAKE, to handle the .o suffix.
- X.SUFFIXES: .exe .o .c .y .l
- X
- X# The game name
- XGAME= nethack
- X
- X# The game directory
- XGAMEDIR = \games\$(GAME)
- X
- X# The game filename
- XGAMEFILE = $(GAMEDIR)\$(GAME).exe
- X
- X# object files for makedefs
- XMAKEOBJS = o\makedefs.o o\alloc.o o\monst.o o\objects.o o\panic.o
- X
- X# object files for special levels compiler
- XSPLEVOBJS = o\lev_comp.o o\lev_lex.o o\lev_main.o o\alloc.o o\monst.o o\objects.o o\panic.o
- X
- X# nothing below this line should have to be changed
- X#
- X# other things that have to be reconfigured are in config.h,
- X# {unixconf.h, pcconf.h, tosconf.h}, and possibly system.h
- X
- XVOBJ = o\allmain.o o\alloc.o o\apply.o o\artifact.o o\attrib.o o\bones.o \
- X o\cmd.o o\dbridge.o o\decl.o o\demon.o o\do.o o\do_name.o o\do_wear.o \
- X o\dog.o o\dogmove.o o\dokick.o o\dothrow.o o\eat.o o\end.o o\engrave.o \
- X o\exper.o o\extralev.o o\fountain.o o\getline.o o\hack.o o\invent.o \
- X o\lock.o o\mail.o o\main.o o\makemon.o o\mcastu.o o\mhitm.o o\mhitu.o \
- X o\mklev.o o\mkmaze.o o\mkobj.o o\mkroom.o o\mon.o o\mondata.o \
- X o\msdos.o o\monmove.o o\monst.o o\mthrowu.o o\music.o o\o_init.o \
- X o\objects.o o\objnam.o o\options.o o\pager.o o\pickup.o o\polyself.o \
- X o\potion.o o\pray.o o\pri.o o\priest.o o\prisym.o $(RANDOM) o\read.o \
- X o\restore.o o\rip.o o\rnd.o o\rumors.o o\save.o o\search.o o\shk.o \
- X o\shknam.o o\sit.o o\sounds.o o\sp_lev.o o\spell.o o\steal.o \
- X o\termcap.o o\timeout.o o\topl.o o\topten.o o\track.o o\trap.o \
- X o\tty.o o\u_init.o o\uhitm.o o\unix.o o\vault.o o\weapon.o o\were.o \
- X o\wield.o o\wizard.o o\worm.o o\worn.o o\write.o o\zap.o
- XHOBJ = $(VOBJ) o\version.o
- X
- XPCCONF_H = $(INCL)\$(TARG)conf.h $(INCL)\msdos.h $(INCL)\system.h \
- X $(INCL)\extern.h
- XGLOBAL_H = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H)
- XCONFIG_H = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H)
- XTRAP_H = $(INCL)\trap.h
- XPERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h
- XYOU_H = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \
- X $(INCL)\monst.h $(INCL)\youprop.h
- XDECL_H = $(INCL)\decl.h $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) \
- X $(INCL)\onames.h $(INCL)\pm.h
- XHACK_H = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \
- X $(INCL)\objclass.h $(INCL)\gold.h $(INCL)\trap.h $(INCL)\flag.h \
- X $(INCL)\rm.h
- X
- X# The main target
- X$(GAMEDIR)\$(GAME).exe: o $(HOBJ)
- X .\linkit
- X# $(LINK) $(HOBJ),nethack,nethack,ltermcap llibux $(LFLAGS) ;
- X
- X# NDMAKE automatically generates LINK response files, so you can
- X# uncomment the second line if you are using NDMAKE.
- X
- X$(GAME): $(GAMEDIR)\$(GAME).exe
- X$(GAME).exe: $(GAMEDIR)\$(GAME).exe
- X
- X.c.o:
- X $(CC) $(CFLAGS) $*.c, o\$*.o ;
- X
- Xall: o $(GAME) auxil
- X @echo Done.
- X
- Xo:
- X mkdir o
- X
- Xmakedefs.exe: $(MAKEOBJS)
- X $(LINK) $(LFLAGS) $(MAKEOBJS);
- X
- Xo\makedefs.o: $(INCL)\config.h $(INCL)\permonst.h $(INCL)\objclass.h
- X
- Xlev_comp.exe: $(SPLEVOBJS)
- X $(LINK) $(LFLAGS) -o lev_comp $(SPLEVOBJS)
- X
- Xo\lev_comp.o: $(HACK_H) $(INCL)\sp_lev.h
- Xo\lev_lex.o: $(INCL)\lev_comp.h $(HACK_H) $(INCL)\sp_lev.h
- Xo\lev_main.o: $(HACK_H) $(INCL)\sp_lev.h
- X
- X# If you have yacc or lex programs, and make any changes,
- X# add some .y.c and .l.c rules to your Make.ini.
- X
- Xlev_comp.c: lev_comp.y
- Xlev_lex.c: lev_comp.l
- X
- X#
- X# The following include files depend on makedefs to be created.
- X#
- X# date.h should be remade any time any of the source or include code
- X# is modified.
- X#
- X$(INCL)\date.h: $(VOBJ) makedefs.exe
- X .\makedefs -v
- X
- X$(INCL)\trap.h: makedefs.exe
- X .\makedefs -t
- X
- X$(INCL)\onames.h: makedefs.exe
- X .\makedefs -o
- X
- X$(INCL)\pm.h: makedefs.exe
- X .\makedefs -p
- X
- Xdata: $(AUX)\data.base makedefs.exe
- X .\makedefs -d
- X
- Xrumors: $(AUX)\rumors.tru $(AUX)\rumors.fal makedefs.exe
- X .\makedefs -r
- X
- X#
- X# The following programs vary depending on what OS you are using.
- X#
- Xo\main.o: $(HACK_H) $(TARG)main.c
- X $(CC) $(CFLAGS) $(TARG)main.c, o\main.o ;
- X
- Xo\tty.o: $(HACK_H) $(INCL)\func_tab.h $(TARG)tty.c
- X $(CC) $(CFLAGS) $(TARG)tty.c, o\tty.o ;
- X
- Xo\unix.o: $(HACK_H) $(TARG)unix.c
- X $(CC) $(CFLAGS) $(TARG)unix.c, o\unix.o ;
- X
- X#
- X# Secondary targets
- X#
- X
- Xauxil: spec_levs
- X cd $(AUX)
- X xcopy *. $(GAMEDIR)
- X
- Xspec_levs: $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des
- X lev_comp $(AUX)\castle.des
- X lev_comp $(AUX)\endgame.des
- X lev_comp $(AUX)\tower.des
- X cd $(AUX)
- X xcopy castle $(GAMEDIR)
- X del castle
- X xcopy endgame $(GAMEDIR)
- X del endgame
- X xcopy tower? $(GAMEDIR)
- X del tower?
- X
- Xclean:
- X del o\*.obj
- X rmdir o
- X
- Xspotless: clean
- X cd $(INCL)
- X del date.h
- X del onames.h
- X del pm.h
- X touch date.h onames.h pm.h
- X cd $(SRC)
- X del makedefs.exe
- X if exist lev_comp.exe del lev_comp.exe
- X
- X#
- X# Other dependencies
- X#
- X
- X# GO AHEAD, DELETE THIS LINE
- X
- Xo\allmain.o: $(HACK_H)
- Xo\alloc.o: $(CONFIG_H)
- Xo\apply.o: $(HACK_H) $(INCL)\edog.h
- Xo\artifact.o: $(HACK_H) $(INCL)\artifact.h
- Xo\attrib.o: $(HACK_H)
- Xo\bones.o: $(HACK_H)
- Xo\cmd.o: $(HACK_H) $(INCL)\func_tab.h
- Xo\dbridge.o: $(HACK_H)
- Xo\decl.o: $(HACK_H)
- Xo\demon.o: $(HACK_H)
- Xo\do.o: $(HACK_H)
- Xo\do_name.o: $(HACK_H)
- Xo\do_wear.o: $(HACK_H)
- Xo\dog.o: $(HACK_H) $(INCL)\edog.h
- Xo\dogmove.o: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
- Xo\dokick.o: $(HACK_H)
- Xo\dothrow.o: $(HACK_H)
- Xo\eat.o: $(HACK_H)
- Xo\end.o: $(HACK_H) $(INCL)\eshk.h
- Xo\engrave.o: $(HACK_H)
- Xo\exper.o: $(HACK_H)
- Xo\extralev.o: $(HACK_H)
- Xo\fountain.o: $(HACK_H)
- Xo\getline.o: $(HACK_H) $(INCL)\func_tab.h
- Xo\hack.o: $(HACK_H)
- Xo\invent.o: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
- Xo\ioctl.o: $(HACK_H)
- Xo\lev_comp.o: $(HACK_H) $(INCL)\sp_lev.h
- Xo\lock.o: $(HACK_H)
- Xo\makemon.o: $(HACK_H)
- Xo\mail.o: $(HACK_H)
- Xo\mcastu.o: $(HACK_H)
- Xo\mhitm.o: $(HACK_H) $(INCL)\artifact.h
- Xo\mhitu.o: $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
- Xo\mklev.o: $(HACK_H)
- Xo\mkmaze.o: $(HACK_H)
- Xo\mkobj.o: $(HACK_H)
- Xo\mkroom.o: $(HACK_H)
- Xo\mon.o: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
- Xo\mondata.o: $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h
- Xo\monmove.o: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
- Xo\monst.o: $(CONFIG_H) $(PERMONST_H) $(INCL)\eshk.h $(INCL)\vault.h $(INCL)\epri.h
- Xo\msdos.o: $(HACK_H)
- Xo\mthrowu.o: $(HACK_H)
- Xo\music.o: $(HACK_H)
- Xo\o_init.o: $(HACK_H) $(INCL)\onames.h
- Xo\objects.o: $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h
- Xo\objnam.o: $(HACK_H)
- Xo\options.o: $(HACK_H)
- Xo\pager.o: $(HACK_H)
- Xo\panic.o: $(CONFIG_H)
- Xo\pickup.o: $(HACK_H)
- Xo\polyself.o: $(HACK_H)
- Xo\potion.o: $(HACK_H)
- Xo\pray.o: $(HACK_H)
- Xo\pri.o: $(HACK_H)
- Xo\priest.o: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h
- Xo\prisym.o: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
- Xo\random.o:
- Xo\read.o: $(HACK_H)
- Xo\restore.o: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
- Xo\rip.o: $(HACK_H)
- Xo\rnd.o: $(HACK_H)
- Xo\rumors.o: $(HACK_H)
- Xo\save.o: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
- Xo\search.o: $(HACK_H) $(INCL)\artifact.h
- Xo\shk.o: $(HACK_H) $(INCL)\eshk.h
- Xo\shknam.o: $(HACK_H) $(INCL)\eshk.h
- Xo\sit.o: $(HACK_H)
- Xo\sounds.o: $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h
- Xo\sp_lev.o: $(HACK_H) $(INCL)\sp_lev.h
- Xo\spell.o: $(HACK_H)
- Xo\steal.o: $(HACK_H)
- Xo\termcap.o: $(HACK_H)
- Xo\timeout.o: $(HACK_H)
- Xo\topl.o: $(HACK_H)
- Xo\topten.o: $(HACK_H)
- Xo\track.o: $(HACK_H)
- Xo\trap.o: $(HACK_H) $(INCL)\edog.h $(INCL)\trapname.h
- Xo\u_init.o: $(HACK_H)
- Xo\uhitm.o: $(HACK_H) $(INCL)\artifact.h
- Xo\vault.o: $(HACK_H) $(INCL)\vault.h
- Xo\version.o: $(HACK_H) $(INCL)\date.h
- Xo\weapon.o: $(HACK_H)
- Xo\were.o: $(HACK_H)
- Xo\wield.o: $(HACK_H)
- Xo\wizard.o: $(HACK_H)
- Xo\worm.o: $(HACK_H) $(INCL)\wseg.h
- Xo\worn.o: $(HACK_H)
- Xo\write.o: $(HACK_H)
- Xo\zap.o: $(HACK_H)
- END_OF_FILE
- if test 7987 -ne `wc -c <'others/Makefile.pc'`; then
- echo shar: \"'others/Makefile.pc'\" unpacked with wrong size!
- fi
- # end of 'others/Makefile.pc'
- if test -f 'src/objects.c' -a "${1}" != "-c" ; then
- mv -f src/objects.c src/objects.c.orig
- fi
- echo shar: Extracting \"'src/objects.c'\" \(31115 characters\)
- sed "s/^X//" >'src/objects.c' <<'END_OF_FILE'
- X/* SCCS Id: @(#)objects.c 3.0 89/04/14
- X/* NetHack may be freely redistributed. See license for details. */
- X/* Copyright (c) Mike Threepoint, 1989 (890110) */
- X
- X/* since this file is also used in auxiliary programs, don't include all the
- X * function declarations for all of nethack
- X */
- X#define EXTERN_H
- X#include "config.h"
- X#include "obj.h"
- X#include "objclass.h"
- X#include "prop.h"
- X#include "decl.h"
- X#undef BOW
- X
- X/* objects have letter " % ) ( 0 _ ` [ ! ? / = * + . */
- X
- X#ifdef C
- X#undef C
- X#endif
- X#ifdef TEXTCOLOR
- X#define C(n) n
- X#else
- X#define C(n)
- X#endif
- X
- Xstruct objclass objects[] = {
- X
- X { "strange object", NULL, NULL, 1,0,0,0,0, 0,
- X ILLOBJ_SYM, 0, 0, 0, 0, 0, 0, 0, C(0) },
- X/* amulets ... - THE Amulet comes last because it is special */
- X#define AMULET(name,desc,power,prob,weight) { \
- X name, desc, NULL, 0,0,0,0,METAL, power, AMULET_SYM, prob, 0, weight, \
- X 150, 0, 0, 0, C(HI_METAL) }
- X
- X AMULET("amulet of esp", "circular", TELEPAT, 190, 2),
- X AMULET("amulet of life saving", "spherical", LIFESAVED, 90, 2),
- X AMULET("amulet of strangulation", "oval", STRANGLED, 150, 2),
- X AMULET("amulet of restful sleep", "triangular", SLEEPING, 150, 2),
- X AMULET("amulet versus poison", "pyramidal", POISON_RES, 180, 2),
- X AMULET("amulet of change", "square", 0, 150, 2),
- X /* POLYMORPH */
- X AMULET("amulet of reflection", "hexagonal", REFLECTING, 90, 2),
- X { "Amulet of Yendor", NULL, NULL, 1,0,1,0,METAL, 0,
- X AMULET_SYM, 0, 0, 2, 3500, 0, 0, 0, C(HI_METAL) },
- X#undef AMULET
- X
- X#define FOOD(name,prob,delay,wt,uk,tin,nutrition,color) { \
- X name, NULL, NULL, 1,1,uk,0,tin, 0, FOOD_SYM, prob, delay, wt, \
- X nutrition/20 + 5, 0, 0, nutrition, C(color) }
- X
- X/* dog eats foods 0-4 but prefers tripe rations above all others */
- X/* fortune cookies can be read */
- X/* carrots improve your vision */
- X/* +0 tins contain monster meat */
- X/* +1 tins (of spinach) make you stronger (like Popeye) */
- X/* food CORPSE is a cadaver of some type */
- X
- X /* meat */
- X#ifdef TOLKIEN
- X FOOD("tripe ration", 145, 1, 2, 0, 0, 200, BROWN),
- X#else
- X FOOD("tripe ration", 150, 1, 2, 0, 0, 200, BROWN),
- X#endif
- X FOOD("dead lizard", 35, 0, 1, 0, 0, 40, GREEN),
- X FOOD("corpse", 0, 0, 0, 0, 0, 0, BROWN),
- X FOOD("egg", 75, 0, 1, 1, 0, 80, WHITE),
- X /* fruits & veggies */
- X FOOD("apple", 10, 0, 1, 0, 0, 50, RED),
- X FOOD("orange", 7, 0, 1, 0, 0, 80, ORANGE_COLORED),
- X FOOD("pear", 7, 0, 1, 0, 0, 50, GREEN+BRIGHT),
- X FOOD("melon", 7, 0, 1, 0, 0, 100, GREEN+BRIGHT),
- X FOOD("banana", 7, 0, 1, 0, 0, 80, YELLOW),
- X FOOD("carrot", 15, 0, 1, 0, 0, 50, ORANGE_COLORED),
- X FOOD("clove of garlic", 5, 0, 1, 0, 0, 40, WHITE),
- X#ifdef TUTTI_FRUTTI
- X FOOD("slime mold", 75, 0, 1, 0, 0, 250, BROWN),
- X#else
- X FOOD("slice of pizza", 75, 0, 1, 0, 0, 250, RED),
- X#endif
- X /* human food */
- X FOOD("lump of royal jelly", 0, 0, 1, 0, 0, 200, YELLOW),
- X FOOD("cream pie", 25, 0, 1, 0, 0, 100, WHITE),
- X FOOD("candy bar", 7, 0, 1, 0, 0, 100, BROWN),
- X FOOD("fortune cookie", 55, 0, 1, 0, 0, 40, BROWN),
- X#ifdef TOLKIEN
- X FOOD("pancake", 25, 1, 1, 0, 0, 200, BROWN),
- X FOOD("lembas wafer", 20, 1, 1, 0, 0, 800, WHITE+BRIGHT),
- X FOOD("cram ration", 20, 1, 3, 0, 0, 600, HI_ORGANIC),
- X FOOD("food ration", 385, 5, 4, 0, 0, 800, HI_ORGANIC),
- X#else
- X FOOD("pancake", 40, 1, 1, 0, 0, 200, BROWN),
- X FOOD("food ration", 405, 5, 4, 0, 0, 800, HI_ORGANIC),
- X#endif
- X#ifdef ARMY
- X FOOD("K-ration", 0, 1, 1, 0, 0, 400, HI_ORGANIC),
- X FOOD("C-ration", 0, 1, 1, 0, 0, 300, HI_ORGANIC),
- X#endif
- X FOOD("tin", 75, 0, 1, 1, METAL, 0, HI_METAL),
- X#undef FOOD
- X
- X#define WEAPON(name,app,kn,mg,bi,prob,wt,cost,sdam,ldam,metal,color) { \
- X name, app, NULL, kn,mg,1,bi,metal, 0, WEAPON_SYM, prob, 0, wt, \
- X cost, sdam, ldam, 0, C(color) }
- X#define PROJECTILE(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop,color) { \
- X name, app, NULL, kn,1,1,bi,metal, 0, WEAPON_SYM, prob, 0, wt, \
- X cost, sdam, ldam, prop, C(color) }
- X#define BOW(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop,color) { \
- X name, app, NULL, kn,0,1,bi,metal, 0, WEAPON_SYM, prob, 0, wt, \
- X cost, sdam, ldam, -(prop), C(color) }
- X
- X/* Note: for weapons that don't do an even die of damage (ex. 2-7 or 3-18)
- X * the extra damage is added on in weapon.c, not here! */
- X
- X/* missiles */
- X#ifdef TOLKIEN
- XPROJECTILE("arrow", NULL, 1, 0, 37, 0, 2, 6, 6,
- X METAL, WP_BOW, HI_METAL),
- XPROJECTILE("elven arrow", "runed arrow", 0, 0, 10, 0, 2, 7, 6,
- X METAL, WP_BOW, HI_METAL),
- XPROJECTILE("orcish arrow", "black arrow", 0, 0, 11, 0, 2, 5, 6,
- X METAL, WP_BOW, BLACK),
- X#else
- XPROJECTILE("arrow", NULL, 1, 0, 58, 0, 2, 6, 6,
- X METAL, WP_BOW, HI_METAL),
- X#endif
- XPROJECTILE("silver arrow", NULL, 1, 0, 8, 0, 2, 6, 6,
- X SILVER, WP_BOW, HI_SILVER),
- XPROJECTILE("crossbow bolt", NULL, 1, 0, 60, 0, 2, 4, 6,
- X METAL, WP_CROSSBOW, HI_METAL),
- X
- XWEAPON("dart", NULL, 1, 1, 0, 60, 0, 2, 3, 2, METAL, HI_METAL),
- XWEAPON("shuriken", "throwing star",0, 1, 0, 30, 0, 5, 8, 6, METAL, HI_METAL),
- XWEAPON("boomerang", NULL, 1, 1, 0, 15, 3, 20, 9, 9, WOOD, HI_WOOD),
- X
- X/* spears */
- X#ifdef TOLKIEN
- XWEAPON("spear", NULL, 1, 1, 0, 55, 3, 5, 6, 8, METAL, HI_METAL),
- XWEAPON("elven spear", "runed spear", 0, 1, 0, 10, 3, 5, 7, 8, METAL, HI_METAL),
- XWEAPON("orcish spear", "black spear", 0, 1, 0, 13, 3, 5, 5, 8, METAL, BLACK),
- XWEAPON("dwarvish spear","shiny spear", 0, 1, 0, 12, 3, 5, 8, 8, METAL, HI_METAL),
- X#else
- XWEAPON("spear", NULL, 1, 1, 0, 90, 3, 5, 6, 8, METAL, HI_METAL),
- X#endif
- XWEAPON("javelin", "throwing spear",0,1, 0, 10, 3, 5, 6, 6, METAL, HI_METAL),
- XWEAPON("trident", NULL, 1, 0, 0, 8, 4, 15, 6, 4, METAL, HI_METAL),
- X /* +1 small, +2d4 large */
- XWEAPON("lance", NULL, 1, 0, 0, 8, 4, 10, 6, 8, METAL, HI_METAL),
- X
- X/* blades */
- X#ifdef TOLKIEN
- XWEAPON("dagger", NULL, 1, 1, 0, 25, 2, 4, 4, 3, METAL, HI_METAL),
- XWEAPON("elven dagger", "large runed knife", 0, 1, 0, 8, 2, 4, 5, 3, METAL, HI_METAL),
- XWEAPON("orcish dagger", "large black knife", 0, 1, 0, 10, 2, 4, 3, 3, METAL, BLACK),
- X#else
- XWEAPON("dagger", NULL, 1, 1, 0, 43, 2, 4, 4, 3, METAL, HI_METAL),
- X#endif
- XWEAPON("athame", NULL, 1, 1, 0, 0, 2, 4, 4, 3, METAL, HI_METAL),
- XWEAPON("scalpel", NULL, 1, 1, 0, 0, 1, 4, 4, 3, METAL, HI_METAL),
- XWEAPON("knife", NULL, 1, 1, 0, 25, 2, 4, 3, 3, METAL, HI_METAL),
- XWEAPON("axe", NULL, 1, 0, 0, 50, 3, 8, 6, 4, METAL, HI_METAL),
- X#ifdef WORM
- XWEAPON("worm tooth", NULL, 1, 0, 0, 0, 3, 2, 2, 2, 0, WHITE),
- XWEAPON("crysknife", NULL, 1, 0, 0, 0, 3,100,10,10, METAL, HI_METAL),
- X#endif
- X
- X/* swords */
- X#ifdef TOLKIEN
- XWEAPON("short sword", NULL, 1, 0, 0, 6, 3, 10, 6, 8, METAL, HI_METAL),
- XWEAPON("elven short sword", "short runed sword",
- X 0, 0, 0, 2, 3, 10, 8, 8, METAL, HI_METAL),
- XWEAPON("orcish short sword", "short black sword",
- X 0, 0, 0, 3, 3, 10, 5, 8, METAL, BLACK),
- XWEAPON("dwarvish short sword", "short shiny sword",
- X 0, 0, 0, 2, 3, 10, 7, 8, METAL, HI_METAL),
- X#else
- XWEAPON("short sword", NULL, 1, 0, 0, 13, 3, 10, 6, 8, METAL, HI_METAL),
- X#endif
- XWEAPON("scimitar", "curved sword", 0, 0, 0, 6, 4, 15, 8, 8, METAL, HI_METAL),
- X#ifdef TOLKIEN
- XWEAPON("broadsword", "wide sword", 0, 0, 0, 8, 4, 10, 4, 6, METAL, HI_METAL),
- X /* +d4 small, +1 large */
- XWEAPON("elven broadsword", "wide runed sword",
- X 0, 0, 0, 4, 4, 10, 6, 6, METAL, HI_METAL),
- X /* +d4 small, +1 large */
- X#else
- XWEAPON("broadsword", "wide sword", 0, 0, 0, 12, 4, 10, 4, 6, METAL, HI_METAL),
- X /* +d4 small, +1 large */
- X#endif
- XWEAPON("long sword", NULL, 1, 0, 0, 60, 4, 15, 8, 12, METAL, HI_METAL),
- X#ifdef TOLKIEN
- XWEAPON("two-handed sword", NULL, 1, 0, 1, 25, 5, 50,12, 6, METAL, HI_METAL),
- X /* +2d6 large */
- XWEAPON("dwarvish mattock", "huge shiny sword",
- X 0, 0, 1, 15, 6, 50,12, 8, METAL, HI_METAL),
- X /* +2d6 large */
- X#else
- XWEAPON("two-handed sword", NULL, 1, 0, 1, 40, 5, 50,12, 6, METAL, HI_METAL),
- X /* +2d6 large */
- X#endif
- XWEAPON("katana", "samurai sword", 0, 0, 0, 6, 4,100,10, 12, METAL, HI_METAL),
- X
- X/* blunt */
- XWEAPON("mace", NULL, 1, 0, 0, 40, 4, 8, 6, 6, METAL, HI_METAL),
- X /* +1 small */
- XWEAPON("morning star", NULL, 1, 0, 0, 12, 4, 10, 4, 6, METAL, HI_METAL),
- X /* +d4 small, +1 large */
- XWEAPON("war hammer", NULL, 1, 0, 0, 15, 3, 5, 4, 4, METAL, HI_METAL),
- X /* +1 small */
- XWEAPON("club", NULL, 1, 0, 0, 10, 3, 4, 6, 3, WOOD, HI_WOOD),
- X#ifdef KOPS
- XWEAPON("rubber hose", NULL, 1, 0, 0, 0, 2, 4, 6, 3, 0, BROWN),
- X#endif
- XWEAPON("quarterstaff", "staff", 0, 0, 1, 10, 3, 8, 6, 6, WOOD, HI_WOOD),
- X/* two-piece */
- XWEAPON("aklys", "thonged club", 0, 0, 0, 8, 3, 4, 6, 3, METAL, HI_METAL),
- XWEAPON("flail", NULL, 1, 0, 0, 40, 3, 4, 6, 4, METAL, HI_METAL),
- X /* +1 small, +1d4 large */
- X/* whip */
- XWEAPON("bullwhip", NULL, 1, 0, 0, 5, 2, 4, 2, 1, 0, BROWN),
- X
- X/* polearms */
- X/* spear-type */
- XWEAPON("partisan", "vulgar polearm", 0, 0, 1, 10, 3, 10, 6, 6, METAL, HI_METAL),
- X /* +1 large */
- XWEAPON("ranseur", "hilted polearm", 0, 0, 1, 10, 3, 6, 4, 4, METAL, HI_METAL),
- X /* +d4 both */
- XWEAPON("spetum", "forked polearm", 0, 0, 1, 10, 3, 5, 6, 6, METAL, HI_METAL),
- X /* +1 small, +d6 large */
- XWEAPON("glaive", "single-edged polearm", 0, 0, 1, 15, 3, 6, 6,10, METAL, HI_METAL),
- X/* axe-type */
- XWEAPON("halberd", "angled poleaxe", 0, 0, 1, 16, 3, 10,10, 6, METAL, HI_METAL),
- X /* +1d6 large */
- XWEAPON("bardiche", "long poleaxe", 0, 0, 1, 8, 3, 7, 4, 4, METAL, HI_METAL),
- X /* +1d4 small, +2d4 large */
- XWEAPON("voulge", "pole cleaver", 0, 0, 1, 8, 3, 5, 4, 4, METAL, HI_METAL),
- X /* +d4 both */
- X/* curved/hooked */
- XWEAPON("fauchard", "pole sickle", 0, 0, 1, 11, 3, 5, 6, 8, METAL, HI_METAL),
- XWEAPON("guisarme", "pruning hook", 0, 0, 1, 11, 3, 5, 4, 8, METAL, HI_METAL),
- X /* +1d4 small */
- XWEAPON("bill-guisarme","hooked polearm",0, 0, 1, 8, 3, 7, 4,10, METAL, HI_METAL),
- X /* +1d4 small */
- X/* other */
- XWEAPON("lucern hammer", "pronged polearm", 0, 0, 1, 10, 3, 7, 4, 6, METAL, HI_METAL),
- X /* +1d4 small */
- XWEAPON("bec de corbin","beaked polearm",0, 0, 1, 8, 3, 8, 8, 6, METAL, HI_METAL),
- X
- X/* bows */
- X#ifdef TOLKIEN
- XBOW("bow", NULL, 1, 0, 24, 3, 120, 30, 6, 0, WP_BOW, HI_WOOD),
- XBOW("elven bow", "runed bow", 0, 0, 12, 3, 120, 35, 6, 0, WP_BOW, HI_WOOD),
- XBOW("orcish bow", "black bow", 0, 0, 12, 3, 120, 25, 6, 0, WP_BOW, BLACK),
- X#else
- XBOW("bow", NULL, 1, 0, 48, 3, 120, 30, 6, 0, WP_BOW, HI_WOOD),
- X#endif
- XBOW("sling", NULL, 1, 0, 40, 2, 20, 4, 6, 0, WP_SLING, HI_WOOD),
- XBOW("crossbow", NULL, 1, 0, 45, 3, 40, 35, 6, 0, WP_CROSSBOW, HI_WOOD),
- X#undef WEAPON
- X#undef PROJECTILE
- X#undef BOW
- X
- X/* tools ... - PICK AXE comes last because it has special characteristics */
- X#define TOOL(name,desc,kn,chg,prob,weight,cost,material,color) {\
- X name, desc, NULL, kn,0,chg,chg,material, 0, TOOL_SYM, prob, 0, \
- X weight, cost, 0, 0, 0, C(color)}
- X
- X#ifdef WALKIES
- X TOOL("leash", NULL, 1, 0, 70, 3, 20, 0, HI_LEATHER),
- X#endif
- X#ifdef MEDUSA
- X TOOL("blindfold", NULL, 1, 0, 55, 2, 20, 0, BLACK),
- X TOOL("mirror", NULL, 1, 0, 50, 3, 40, GLASS, BLUE),
- X#else
- X TOOL("blindfold", NULL, 1, 0, 105, 2, 20, 0, BLACK),
- X#endif
- X TOOL("tinning kit", NULL, 1, 0, 15, 10, 30, METAL, HI_METAL),
- X TOOL("lock pick", NULL, 1, 0, 55, 2, 20, METAL, HI_METAL),
- X TOOL("credit card", NULL, 1, 0, 5, 1, 10, 0, WHITE),
- X#ifdef WALKIES
- X TOOL("key", NULL, 1, 0, 100, 1, 10, METAL, HI_METAL),
- X#else
- X TOOL("key", NULL, 1, 0, 155, 1, 10, METAL, HI_METAL),
- X#endif
- X TOOL("skeleton key", "key", 0, 0, 60, 1, 10, METAL, HI_METAL),
- X TOOL("expensive camera", NULL, 1, 0, 5, 3, 200, 0, BLACK),
- X TOOL("magic marker", NULL, 1, 1, 15, 1, 50, 0, RED),
- X TOOL("stethoscope", NULL, 1, 0, 15, 2, 75, 0, HI_METAL),
- X TOOL("tin opener", NULL, 1, 0, 25, 1, 30, METAL, HI_METAL),
- X#ifdef WALKIES
- X TOOL("lamp", NULL, 1, 1, 90, 10, 50, 0, YELLOW),
- X#else
- X TOOL("lamp", NULL, 1, 1, 105, 10, 50, 0, YELLOW),
- X#endif
- X TOOL("magic lamp", "lamp", 0, 1, 20, 10, 50, 0, YELLOW),
- X TOOL("crystal ball", NULL, 1, 1, 35, 15, 60, GLASS, HI_GLASS),
- X TOOL("figurine", NULL, 1, 0, 35, 5, 80, MINERAL, HI_MINERAL),
- X TOOL("ice box", NULL, 1, 0, 5, 40, 30, 0, WHITE),
- X TOOL("large box", NULL, 1, 0, 40, 40, 20, WOOD, HI_WOOD),
- X TOOL("chest", NULL, 1, 0, 35, 40, 20, WOOD, HI_WOOD),
- X TOOL("sack", "bag", 0, 0, 40, 3, 20, 0, HI_CLOTH),
- X TOOL("bag of holding", "bag", 0, 0, 20, 3, 100, 0, HI_CLOTH),
- X TOOL("bag of tricks", "bag", 0, 1, 20, 3, 100, 0, HI_CLOTH),
- X#ifndef MUSIC
- X TOOL("whistle", NULL, 1, 0, 120, 2, 10, METAL, HI_METAL),
- X TOOL("magic whistle","whistle", 0, 0, 50, 2, 10, METAL, HI_METAL),
- X#else
- X TOOL("whistle", NULL, 1, 0, 105, 2, 10, METAL, HI_METAL),
- X TOOL("magic whistle","whistle", 0, 0, 30, 2, 10, METAL, HI_METAL),
- X TOOL("flute", NULL, 1, 0, 6, 3, 12, WOOD, HI_WOOD),
- X TOOL("magic flute", "flute", 0, 1, 2, 3, 12, WOOD, HI_WOOD),
- X TOOL("horn", NULL, 1, 0, 5, 4, 15, METAL, HI_METAL),
- X TOOL("frost horn", "horn", 0, 1, 2, 4, 15, METAL, HI_METAL),
- X TOOL("fire horn", "horn", 0, 1, 2, 4, 15, METAL, HI_METAL),
- X TOOL("harp", NULL, 1, 0, 4, 10, 50, METAL, HI_METAL),
- X TOOL("magic harp", "harp", 0, 1, 2, 10, 50, METAL, HI_METAL),
- X TOOL("bugle", NULL, 1, 0, 6, 3, 15, METAL, HI_METAL),
- X TOOL("drum", NULL, 1, 0, 4, 4, 25, 0, BROWN),
- X TOOL("drum of earthquake", "drum", 0, 1, 2, 4, 25, 0, BROWN),
- X#endif
- X#undef TOOL
- X { "pick-axe", NULL, NULL, 1,0,1,1,METAL, 0, TOOL_SYM, 20,
- X 0, 10, 50, 6, 3, 0, C(HI_METAL)},
- X { "blinding venom", "splash of venom", NULL,
- X 0,1,0,0,0, 0, VENOM_SYM, 500, 0, 0, 0, 0, 0, 0, C(HI_ORGANIC)},
- X { "acid venom", "splash of venom", NULL,
- X 0,1,0,0,0, 0, VENOM_SYM, 500, 0, 0, 0, 6, 6, 0, C(HI_ORGANIC)},
- X /* +d6 small or large */
- X { "heavy iron ball", NULL, NULL, 1,0,0,0,METAL, 0,
- X BALL_SYM, 1000, 0, 20, 10, 0, 0, 0, C(HI_METAL)},
- X { "iron chain", NULL, NULL, 1,0,0,0,METAL, 0,
- X CHAIN_SYM, 1000, 0, 20, 0, 0, 0, 0, C(HI_METAL)},
- X
- X /* Note: boulders and rocks normally do not appear at random; the
- X * probabilities only come into effect when you try to polymorph them.
- X */
- X { "boulder", NULL, NULL, 1,0,0,0,MINERAL, 0, ROCK_SYM, 100, 0,
- X 200 /* > MAX_CARR_CAP */, 0, 20, 20, 0, C(HI_MINERAL)},
- X { "statue", NULL, NULL, 1,0,0,0,MINERAL, 0, ROCK_SYM, 900, 0,
- X 250, 0, 20, 20, 0, C(HI_MINERAL)},
- X
- X#define ARMOR(name,desc,kn,blk,power,prob,delay,weight,cost,ac,can,metal,c) \
- X {name, desc, NULL, kn,0,1,blk,metal, power, ARMOR_SYM, prob,\
- X delay, weight, cost, ac, can, 0, C(c)}
- X#ifdef TOLKIEN
- XARMOR("elven leather helm", "leather hat",
- X 0, 0, 0, 6, 1, 2, 8, 9, 0, 0, HI_LEATHER),
- XARMOR("orcish helm", "black cap",
- X 0, 0, 0, 6, 1, 3, 10, 9, 0, METAL, BLACK),
- XARMOR("dwarvish iron helm", "hard hat",
- X 0, 0, 0, 6, 1, 3, 20, 8, 0, METAL, HI_METAL),
- X#else
- XARMOR("orcish helm", "black cap",
- X 0, 0, 0, 18, 1, 3, 10, 9, 0, METAL, BLACK),
- X#endif
- XARMOR("fedora", NULL, 1, 0, 0, 0, 1, 1, 8, 9, 0, 0, BROWN),
- XARMOR("helmet", "rusty pot",
- X 0, 0, 0, 12, 1, 2, 10, 9, 0, METAL, HI_METAL),
- XARMOR("helm of brilliance", "plumed hat",
- X 0, 0, 0, 6, 1, 2, 50, 9, 0, METAL, GREEN),
- XARMOR("helm of opposite alignment", "crested helmet",
- X 0, 0, 0, 6, 1, 2, 50, 9, 0, METAL, HI_METAL),
- XARMOR("helm of telepathy", "visored helmet",
- X 0, 0, TELEPAT, 2, 1, 2, 50, 9, 0, METAL, HI_METAL),
- X
- X/* non-metal and (METAL | 1) armors do not rust */
- XARMOR("dragon scale mail", NULL,
- X 1, 1, 0, 0, 5, 5,1000, 1, 0, 0, HI_LEATHER),
- XARMOR("plate mail", NULL,
- X 1, 1, 0, 44, 5, 9, 600, 3, 2, METAL, HI_METAL),
- XARMOR("crystal plate mail", NULL,
- X 1, 1, 0, 10, 5, 9, 820, 3, 2, 0, WHITE+BRIGHT),
- X#ifdef SHIRT
- XARMOR("bronze plate mail", NULL,
- X 1, 1, 0, 25, 5, 9, 400, 4, 0, COPPER, HI_COPPER),
- X#else
- XARMOR("bronze plate mail", NULL,
- X 1, 1, 0, 35, 5, 9, 400, 4, 0, COPPER, HI_COPPER),
- X#endif
- XARMOR("splint mail", NULL, 1, 1, 0, 66, 5, 8, 80, 4, 1, METAL, HI_METAL),
- XARMOR("banded mail", NULL, 1, 1, 0, 76, 5, 8, 90, 4, 0, METAL, HI_METAL),
- X#ifdef TOLKIEN
- XARMOR("dwarvish mithril-coat", NULL,
- X 1, 0, 0, 10, 1, 2, 240, 4, 3, MITHRIL, HI_METAL),
- XARMOR("elven mithril-coat", NULL, 1, 0, 0, 15, 1, 2, 240, 5, 3, MITHRIL, HI_METAL),
- XARMOR("chain mail", NULL, 1, 0, 0, 76, 5, 6, 75, 5, 1, METAL, HI_METAL),
- XARMOR("orcish chain mail", "black chain mail",
- X 0, 0, 0, 20, 5, 6, 75, 5, 1, METAL, BLACK),
- X#else
- XARMOR("dwarvish mithril-coat", NULL,
- X 1, 0, 0, 25, 1, 2, 240, 4, 3, MITHRIL, HI_METAL),
- XARMOR("chain mail", NULL, 1, 0, 0, 96, 5, 6, 75, 5, 1, METAL, HI_METAL),
- X#endif
- XARMOR("scale mail", NULL, 1, 0, 0, 76, 5, 5, 45, 6, 0, METAL, HI_METAL),
- XARMOR("studded leather armor", NULL,
- X 1, 0, 0, 76, 3, 3, 15, 7, 1, 0, HI_LEATHER),
- X#ifdef TOLKIEN
- XARMOR("ring mail", NULL, 1, 0, 0, 76, 5, 4, 100, 7, 0, METAL, HI_METAL),
- XARMOR("orcish ring mail", "black ring mail",
- X 0, 0, 0, 20, 5, 5, 80, 8, 1, METAL, BLACK),
- X#else
- XARMOR("ring mail", NULL, 1, 0, 0, 96, 5, 4, 100, 7, 0, METAL, HI_METAL),
- X#endif
- XARMOR("leather armor", NULL, 1, 0, 0, 97, 3, 2, 5, 8, 0, 0, HI_LEATHER),
- X
- X/* 'cope' is not a spelling mistake... leave it be */
- XARMOR("mummy wrapping", NULL,
- X 1, 0, 0, 0, 0, 2, 2, 10, 2, 0, HI_CLOTH),
- X#ifdef TOLKIEN
- XARMOR("elven cloak", "ornamental cope",
- X 0, 0, STEALTH, 12, 0, 2, 60, 9, 3, 0, HI_CLOTH),
- XARMOR("orcish cloak", "black mantelet",
- X 0, 0, 0, 12, 0, 2, 40, 10, 3, 0, BLACK),
- XARMOR("dwarvish cloak", "colorful hooded cloak",
- X 0, 0, 0, 12, 0, 2, 50, 10, 3, 0, HI_CLOTH),
- X#else
- XARMOR("elven cloak", "ornamental cope",
- X 0, 0, STEALTH, 36, 0, 2, 60, 9, 3, 0, HI_CLOTH),
- X#endif
- XARMOR("cloak of protection", "tattered cape",
- X 0, 0, PROTECTION, 12, 0, 2, 50, 7, 3, 0, HI_CLOTH),
- XARMOR("cloak of invisibility", "opera hood",
- X 0, 0, INVIS, 12, 0, 2, 60, 9, 3, 0, HI_CLOTH),
- XARMOR("cloak of magic resistance", "faded pall",
- X 0, 0, ANTIMAGIC, 2, 0, 2, 60, 9, 3, 0, HI_CLOTH),
- XARMOR("cloak of displacement", "piece of cloth",
- X 0, 0, DISPLACED, 12, 0, 2, 50, 9, 3, 0, HI_CLOTH),
- X
- X#ifdef TOLKIEN
- XARMOR("small shield", NULL,
- X 1, 0, 0, 6, 0, 2, 3, 9, 0, METAL, HI_METAL),
- XARMOR("elven shield", "blue and green shield",
- X 0, 0, 0, 2, 0, 2, 3, 8, 0, METAL, GREEN),
- XARMOR("Uruk-hai shield", "white-handed shield",
- X 0, 0, 0, 2, 0, 4, 3, 9, 0, METAL, HI_METAL),
- XARMOR("orcish shield", "red-eyed shield",
- X 0, 0, 0, 2, 0, 3, 3, 9, 0, METAL, RED),
- XARMOR("large shield", NULL,
- X 1, 1, 0, 7, 0, 4, 7, 8, 0, METAL, HI_METAL),
- XARMOR("dwarvish roundshield", "large round shield",
- X 0, 0, 0, 4, 0, 4, 7, 8, 0, METAL, HI_METAL),
- X#else
- XARMOR("small shield", NULL,
- X 1, 0, 0, 12, 0, 2, 3, 9, 0, METAL, HI_METAL),
- XARMOR("large shield", NULL,
- X 1, 1, 0, 11, 0, 4, 7, 8, 0, METAL, HI_METAL),
- X#endif
- XARMOR("shield of reflection", "polished silver shield",
- X 0, 0, REFLECTING, 3, 0, 3, 50, 8, 0, SILVER, HI_SILVER),
- X
- X#ifdef SHIRT
- XARMOR("Hawaiian shirt", NULL, 1, 0, 0, 10, 0, 2, 5, 10, 0, 0, MAGENTA),
- X#endif
- X
- XARMOR("leather gloves", "old gloves",
- X 0, 0, 0, 16, 1, 2, 8, 9, 0, 0, BROWN),
- XARMOR("gauntlets of fumbling", "padded gloves",
- X 0, 0, FUMBLING, 8, 1, 2, 50, 9, 0, 0, BROWN),
- XARMOR("gauntlets of power", "riding gloves",
- X 0, 0, 0, 8, 1, 2, 50, 9, 0, METAL, BROWN),
- XARMOR("gauntlets of dexterity", "fencing gloves",
- X 0, 0, 0, 8, 1, 2, 50, 9, 0, 0, BROWN),
- X
- XARMOR("low boots", "walking shoes",
- X 0, 0, 0, 25, 2, 3, 8, 9, 0, 0, BROWN),
- XARMOR("iron shoes", "hard shoes",
- X 0, 0, 0, 7, 2, 5, 16, 8, 0, METAL, HI_METAL),
- XARMOR("high boots", "jackboots",
- X 0, 0, 0, 15, 2, 4, 12, 8, 0, 0, BROWN),
- XARMOR("speed boots", "combat boots",
- X 0, 0, FAST, 12, 2, 4, 50, 9, 0, 0, BROWN),
- XARMOR("water walking boots", "jungle boots",
- X 0, 0, WWALKING, 12, 2, 4, 50, 9, 0, 0, BROWN),
- XARMOR("jumping boots", "hiking boots",
- X 0, 0, JUMPING, 12, 2, 4, 50, 9, 0, 0, BROWN),
- XARMOR("elven boots", "mud boots",
- X 0, 0, STEALTH, 12, 2, 3, 8, 9, 0, 0, BROWN),
- XARMOR("fumble boots", "riding boots",
- X 0, 0, FUMBLING, 12, 2, 4, 30, 9, 0, 0, BROWN),
- XARMOR("levitation boots", "snow boots",
- X 0, 0, LEVITATION, 12, 2, 4, 30, 9, 0, 0, BROWN),
- X#undef ARMOR
- X
- X#define POTION(name,desc,power,prob,cost,color) \
- X { name, desc, NULL, 0,1,0,0,0, power,\
- X POTION_SYM, prob, 0, 2, cost, 0, 0, 0, C(color)}
- X
- X#ifdef SPELLS
- XPOTION("fruit juice", "smoky", 0, 45, 50, WHITE),
- XPOTION("booze", "bubbly", 0, 45, 50, WHITE),
- XPOTION("gain energy", "ebony", 0, 45,150, BLACK),
- X#else
- XPOTION("fruit juice", "smoky", 0, 70, 50, WHITE),
- XPOTION("booze", "bubbly", 0, 65, 50, WHITE),
- X#endif
- XPOTION("gain ability", "swirly", 0, 45,300, WHITE),
- XPOTION("restore ability", "pink", 0, 45,100, MAGENTA+BRIGHT),
- XPOTION("sickness", "ruby", SICK, 45, 50, RED),
- XPOTION("confusion", "orange", CONFUSION, 45, 100, ORANGE_COLORED),
- XPOTION("blindness", "yellow", BLINDED, 45,150, YELLOW),
- XPOTION("paralysis", "emerald", 0, 45,300, GREEN+BRIGHT),
- XPOTION("speed", "dark green", FAST, 45,200, GREEN),
- XPOTION("levitation", "cyan", LEVITATION, 45,200, CYAN),
- XPOTION("hallucination", "brilliant blue", HALLUC, 45,100, BLUE+BRIGHT),
- XPOTION("invisibility", "sky blue", INVIS, 45,150, CYAN),
- XPOTION("see invisible", "magenta", SEE_INVIS, 45,50, MAGENTA),
- XPOTION("healing", "purple", 0, 65,100, MAGENTA),
- XPOTION("extra healing", "purple-red", 0, 50,100, MAGENTA),
- XPOTION("gain level", "puce", 0, 20,300, MAGENTA+BRIGHT),
- XPOTION("enlightenment", "brown", 0, 20,200, BROWN),
- XPOTION("monster detection", "white", 0, 45,150, WHITE),
- XPOTION("object detection", "glowing", 0, 45,150, WHITE+BRIGHT),
- XPOTION("water", "clear", 0, 125,100,CYAN),
- X#undef POTION
- X
- X#define SCROLL(name,text,prob,cost) { name, text, NULL, 0,1,0,0,0, 0,\
- X SCROLL_SYM, prob, 0, 3, cost, 0, 0, 0, C(HI_PAPER)}
- X#ifdef MAIL
- X SCROLL("mail", "KIRJE", 0, 0),
- X#endif
- X SCROLL("enchant armor", "ZELGO MER", 63, 80),
- X SCROLL("destroy armor", "JUYED AWK YACC", 45, 100),
- X SCROLL("confuse monster", "NR 9", 53, 100),
- X SCROLL("scare monster", "XIXAXA XOXAXA XUXAXA", 35, 100),
- X SCROLL("blank paper", "READ ME", 28, 60),
- X SCROLL("remove curse", "PRATYAVAYAH", 65, 80),
- X SCROLL("enchant weapon", "DAIYEN FOOELS", 85, 60),
- X SCROLL("create monster", "LEP GEX VEN ZEA", 45, 200),
- X SCROLL("taming", "PRIRUTSENIE", 15, 200),
- X SCROLL("genocide", "ELBIB YLOH", 15, 300),
- X SCROLL("light", "VERR YED HORRE", 95, 50),
- X SCROLL("teleportation", "VENZAR BORGAVVE", 55, 100),
- X SCROLL("gold detection", "THARR", 33, 100),
- X SCROLL("food detection", "YUM YUM", 25, 100),
- X SCROLL("identify", "KERNOD WEL", 185, 20),
- X SCROLL("magic mapping", "ELAM EBOW", 45, 100),
- X SCROLL("amnesia", "DUAM XNAHT", 35, 200),
- X SCROLL("fire", "ANDOVA BEGARIN", 48, 100),
- X SCROLL("punishment", "VE FORBRYDERNE", 15, 300),
- X SCROLL("charging", "HACKEM MUCHE", 15, 300),
- X SCROLL(NULL, "VELOX NEB", 0, 100),
- X SCROLL(NULL, "FOOBIE BLETCH", 0, 100),
- X SCROLL(NULL, "TEMOV", 0, 100),
- X SCROLL(NULL, "GARVEN DEH", 0, 100),
- X#undef SCROLL
- X
- X#define WAND(name,typ,prob,cost,flags,metal,c) { \
- X name, typ, NULL, 0,0,1,0,metal, 0, WAND_SYM, \
- X prob, 0, 3, cost, flags, 0, 0, C(c) }
- X
- XWAND("light", "glass", 95, 100, NODIR, GLASS,HI_GLASS),
- XWAND("secret door detection", "balsa", 50, 150, NODIR, WOOD,HI_WOOD),
- XWAND("create monster", "maple", 45, 200, NODIR, WOOD,HI_WOOD),
- XWAND("wishing", "pine", 5, 500, NODIR, WOOD,HI_WOOD),
- XWAND("striking", "oak", 75, 150, IMMEDIATE,WOOD,HI_WOOD),
- XWAND("nothing", "ebony", 25, 100, IMMEDIATE,WOOD,HI_WOOD),
- XWAND("make invisible", "marble", 45, 150, IMMEDIATE,MINERAL,HI_MINERAL),
- XWAND("slow monster", "tin", 55, 150, IMMEDIATE,METAL,HI_METAL),
- XWAND("speed monster", "brass", 55, 150, IMMEDIATE,COPPER,HI_COPPER),
- XWAND("undead turning", "copper", 55, 150, IMMEDIATE,COPPER,HI_COPPER),
- XWAND("polymorph", "silver", 45, 200, IMMEDIATE,SILVER,HI_SILVER),
- XWAND("cancellation", "platinum", 45, 200, IMMEDIATE,PLATINUM,HI_SILVER|BRIGHT),
- XWAND("teleportation", "iridium", 45, 200, IMMEDIATE,METAL,CYAN|BRIGHT),
- X#ifdef PROBING
- XWAND("opening", "zinc", 25, 150, IMMEDIATE,METAL,HI_METAL),
- XWAND("locking", "aluminum", 25, 150, IMMEDIATE,METAL,HI_METAL),
- XWAND("probing", "uranium", 30, 150, IMMEDIATE,METAL,HI_METAL),
- X#else
- XWAND("opening", "zinc", 40, 150, IMMEDIATE,METAL,HI_METAL),
- XWAND("locking", "aluminum", 40, 150, IMMEDIATE,METAL,HI_METAL),
- X#endif
- XWAND("digging", "iron", 55, 150, RAY, METAL,HI_METAL),
- XWAND("magic missile", "steel", 50, 150, RAY, METAL,HI_METAL),
- XWAND("fire", "hexagonal", 40, 175, RAY, METAL,HI_METAL),
- XWAND("sleep", "runed", 50, 175, RAY, METAL,HI_METAL),
- XWAND("cold", "short", 40, 175, RAY, METAL,HI_METAL),
- XWAND("death", "long", 5, 500, RAY, METAL,HI_METAL),
- XWAND("lightning", "curved", 40, 175, RAY, METAL,HI_METAL),
- XWAND(NULL, "forked", 0, 150, 0, WOOD,HI_WOOD),
- XWAND(NULL, "spiked", 0, 150, 0, METAL,HI_METAL),
- XWAND(NULL, "jeweled", 0, 150, 0, METAL,HI_MINERAL),
- X#undef WAND
- X
- X#ifdef SPELLS
- X/* books */
- X#define SPELL(name,desc,prob,delay,level,flags,color) \
- X { name, desc, NULL, 0,1,0,0,0, 0, SPBOOK_SYM, prob, delay, \
- X 5, level*100, flags, 0, level, C(color)}
- X
- XSPELL("magic missile", "parchment", 45, 3, 2, RAY, HI_PAPER),
- XSPELL("fireball", "vellum", 20, 6, 4, RAY, HI_PAPER),
- XSPELL("sleep", "dog eared", 50, 1, 1, RAY, HI_PAPER),
- XSPELL("cone of cold", "ragged", 10, 8, 5, RAY, HI_PAPER),
- XSPELL("finger of death", "stained", 5, 10, 7, RAY, HI_PAPER),
- XSPELL("light", "cloth", 45, 1, 1, NODIR, HI_CLOTH),
- XSPELL("detect monsters", "leather", 45, 1, 1, NODIR, HI_LEATHER),
- XSPELL("healing", "white", 40, 2, 1, NODIR, WHITE),
- XSPELL("knock", "pink", 40, 1, 1, IMMEDIATE, MAGENTA+BRIGHT),
- XSPELL("force bolt", "red", 40, 2, 1, IMMEDIATE, RED),
- XSPELL("confuse monster", "orange", 37, 2, 2, IMMEDIATE, ORANGE_COLORED),
- XSPELL("cure blindness", "yellow", 27, 2, 2, IMMEDIATE, YELLOW),
- XSPELL("slow monster", "light green", 37, 2, 2, IMMEDIATE, GREEN+BRIGHT),
- XSPELL("wizard lock", "dark green", 35, 3, 2, IMMEDIATE, GREEN),
- XSPELL("create monster", "turquoise", 37, 3, 2, NODIR, CYAN+BRIGHT),
- XSPELL("detect food", "cyan", 37, 3, 2, NODIR, CYAN),
- XSPELL("cause fear", "light blue", 25, 3, 3, NODIR, BLUE+BRIGHT),
- XSPELL("clairvoyance", "dark blue", 15, 3, 3, NODIR, BLUE),
- XSPELL("cure sickness", "indigo", 32, 3, 3, NODIR, BLUE),
- XSPELL("charm monster", "magenta", 20, 3, 3, IMMEDIATE, MAGENTA),
- XSPELL("haste self", "purple", 33, 4, 3, NODIR, MAGENTA),
- XSPELL("detect unseen", "violet", 25, 4, 3, NODIR, MAGENTA),
- XSPELL("levitation", "tan", 25, 4, 4, NODIR, BROWN),
- XSPELL("extra healing", "plaid", 32, 5, 3, NODIR, GREEN),
- XSPELL("restore ability", "light brown", 25, 5, 4, NODIR, BROWN),
- XSPELL("invisibility", "dark brown", 32, 5, 4, NODIR, BROWN),
- XSPELL("detect treasure", "gray", 25, 5, 4, NODIR, GRAY),
- XSPELL("remove curse", "white", 25, 5, 5, NODIR, WHITE),
- XSPELL("dig", "mottled", 22, 6, 5, RAY, HI_PAPER),
- XSPELL("magic mapping", "rusty", 18, 7, 5, NODIR, RED),
- XSPELL("identify", "bronze", 25, 8, 5, NODIR, HI_COPPER),
- XSPELL("turn undead", "copper", 17, 8, 6, IMMEDIATE, HI_COPPER),
- XSPELL("polymorph", "silver", 12, 8, 6, IMMEDIATE, HI_SILVER),
- XSPELL("teleport away", "gold", 15, 6, 6, IMMEDIATE, HI_GOLD),
- XSPELL("create familiar", "glittering", 10, 7, 6, NODIR, WHITE+BRIGHT),
- XSPELL("cancellation", "shining", 12, 8, 7, IMMEDIATE, WHITE+BRIGHT),
- XSPELL("genocide", "glowing", 5, 10, 7, NODIR, WHITE+BRIGHT),
- XSPELL(NULL, "dull", 0, 0, 0, 0, HI_PAPER),
- XSPELL(NULL, "thin", 0, 0, 0, 0, HI_PAPER),
- XSPELL(NULL, "thick", 0, 0, 0, 0, HI_PAPER),
- X#undef SPELL
- X#endif /* SPELLS /**/
- X
- X#define RING(name,stone,power,cost,spec,metal,color) \
- X { name, stone, NULL, 0,0,spec,spec,metal, \
- X power, RING_SYM, 0, 0, 1, cost, 0, 0, 0, C(color)}
- X
- XRING("adornment", "wooden", ADORNED, 100, 1, WOOD, HI_WOOD),
- XRING("gain strength", "granite", 0, 150, 1, MINERAL, HI_MINERAL),
- XRING("increase damage", "coral", 0, 150, 1, MINERAL, RED+BRIGHT),
- XRING("protection", "black onyx", PROTECTION, 100, 1, MINERAL, BLACK),
- XRING("regeneration", "moonstone", REGENERATION, 200, 0, MINERAL, HI_MINERAL),
- XRING("searching", "tiger eye", SEARCHING, 200, 0, MINERAL, BROWN),
- XRING("stealth", "jade", STEALTH, 100, 0, MINERAL, GREEN),
- XRING("levitation", "agate", LEVITATION, 200, 0, MINERAL, RED),
- XRING("hunger", "topaz", HUNGER, 100, 0, MINERAL, CYAN),
- XRING("aggravate monster", "sapphire", AGGRAVATE_MONSTER, 150, 0, METAL, BLUE),
- XRING("conflict", "ruby", CONFLICT, 300, 0, METAL, RED),
- XRING("warning", "diamond", WARNING, 100, 0, METAL, WHITE+BRIGHT),
- XRING("poison resistance", "pearl", POISON_RES, 150, 0, METAL, WHITE),
- XRING("fire resistance", "iron", FIRE_RES, 200, 0, METAL, HI_METAL),
- XRING("cold resistance", "brass", COLD_RES, 150, 0, COPPER, HI_COPPER),
- XRING("shock resistance", "copper", SHOCK_RES, 150, 0, COPPER, HI_COPPER),
- XRING("teleportation", "silver", TELEPORT, 200, 0, SILVER, HI_SILVER),
- XRING("teleport control", "gold", TELEPORT_CONTROL,
- X 300, 0, GOLD, HI_GOLD),
- X#ifdef POLYSELF
- XRING("polymorph", "ivory", POLYMORPH, 300, 0, 0, WHITE),
- XRING("polymorph control","emerald", POLYMORPH_CONTROL,
- X 300, 0, METAL, GREEN+BRIGHT),
- X#endif
- XRING("invisibility", "wire", INVIS, 150, 0, METAL, HI_METAL),
- XRING("see invisible", "engagement", SEE_INVIS, 150, 0, METAL, HI_METAL),
- XRING("protection from shape changers", "shining", PROT_FROM_SHAPE_CHANGERS,
- X 100, 0, METAL, HI_METAL|BRIGHT),
- X#undef RING
- X
- X/* gems ************************************************************/
- X#define GEM(name,desc,prob,wt,gval,glass, color) \
- X { name, desc, NULL, 0,1,0,0,glass, 0,\
- X GEM_SYM, prob, 0, wt, gval, 3, 3, WP_SLING, C(color)}
- XGEM("dilithium crystal", "white", 3, 1, 4500, MINERAL, WHITE),
- XGEM("diamond", "white", 4, 1, 4000, MINERAL, WHITE),
- XGEM("ruby", "red", 5, 1, 3500, MINERAL, RED),
- XGEM("sapphire", "blue", 6, 1, 3000, MINERAL, BLUE),
- XGEM("emerald", "green", 7, 1, 2500, MINERAL, GREEN),
- XGEM("turquoise", "green", 8, 1, 2000, MINERAL, GREEN),
- XGEM("aquamarine", "green", 10, 1, 1500, MINERAL, GREEN),
- XGEM("amber", "yellowish brown", 11, 1, 1000, MINERAL, BROWN),
- XGEM("topaz", "yellowish brown", 13, 1, 900, MINERAL, BROWN),
- XGEM("opal", "white", 15, 1, 800, MINERAL, WHITE),
- XGEM("garnet", "red", 17, 1, 700, MINERAL, RED),
- XGEM("amethyst", "violet", 19, 1, 600, MINERAL, MAGENTA),
- XGEM("jasper", "red", 21, 1, 500, MINERAL, RED),
- XGEM("fluorite", "violet", 22, 1, 400, MINERAL, MAGENTA),
- XGEM("jade", "green", 23, 1, 300, MINERAL, GREEN),
- XGEM("worthless piece of white glass", "white", 131, 1, 0, GLASS, WHITE),
- XGEM("worthless piece of blue glass", "blue", 131, 1, 0, GLASS, BLUE),
- XGEM("worthless piece of red glass", "red", 131, 1, 0, GLASS, RED),
- XGEM("worthless piece of yellowish brown glass", "yellowish brown",
- X 131, 1, 0, GLASS, BROWN),
- XGEM("worthless piece of green glass", "green", 131, 1, 0, GLASS, GREEN),
- XGEM("worthless piece of violet glass", "violet",131, 1, 0, GLASS, MAGENTA),
- XGEM("luckstone", "gray", 10, 1, 60, MINERAL, GRAY),
- XGEM("loadstone", "gray", 10, 50, 1, MINERAL, GRAY),
- X{ "rock", NULL, NULL, 1,1,0,0,MINERAL, 0,
- X GEM_SYM, 10, 0, 1, 0, 3, 3, WP_SLING, C(HI_MINERAL)},
- X#undef GEM
- X
- X { NULL, NULL, NULL, 0,0,0,0,0, 0, ILLOBJ_SYM, 0, 0, 0, 0, 0, 0, 0, C(0) }
- X};
- X
- X#undef C
- END_OF_FILE
- if test 31115 -ne `wc -c <'src/objects.c'`; then
- echo shar: \"'src/objects.c'\" unpacked with wrong size!
- fi
- # end of 'src/objects.c'
- echo shar: End of archive 9 \(of 11\).
- cp /dev/null ark9isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 11 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-